package nextel.dao;

import nextel.visita.ControlVisita;
import pe.com.nextel.http.FrmHttpListener;
import pe.com.nextel.http.MensajeHttp;
import java.io.InputStreamReader;
//import nextel.idioma.IdiomaManager;
import nextel.usuario.ControlUsuario;
import org.kxml2.io.KXmlParser;
import pe.com.nextel.idioma.IdiomaManager;

/**
 *
 * @author eespinoza
 */
public class HttpControl implements FrmHttpListener {

    public static final HttpControl httpControl = new HttpControl();
    public final short PRCHTTP_VALIDARUSUARIO = 1;
    public final short PRCHTTP_SINCRONIZAR = 2;
    public final short PRCHTTP_SERVICIO = 3;
    public final short PRCHTTP_SERVICIOTOTAL = 4;
    public final short PRCHTTP_SERVICIOSYNCRONIZAR = 5;
    public final short PRCHTTP_IDIOMA = 6;
    public final short PRCHTTP_AVANCE = 7;    
    
    private short proceso;

    //private Midlet action;

    public void setAction() {
        //action = midlet;
    }

    public static HttpControl getInstance() {
        return httpControl;
    }

    private HttpControl() {
    }

    public void setProceso(short proceso) {
        this.proceso = proceso;
    }

    public void notifyHttpEnd(MensajeHttp mensajeHttp) throws Exception {

//        System.out.println("HTTPDAO.notifyHttpEnd");

        KXmlParser parser = new KXmlParser();
        InputStreamReader inputReader = new InputStreamReader(mensajeHttp.getInput());
        
        //Fecha.getFechaActualCompleta()

//        System.out.println("2 HTTPDAO.notifyHttpEnd");

        try {

            parser.setInput(inputReader);

            switch (proceso) {

                case PRCHTTP_VALIDARUSUARIO:
                    ControlUsuario.getInstance().procesarUsuarioOnLine(parser);
                    break;

                case PRCHTTP_SINCRONIZAR:
                    ControlUsuario.getInstance().procesarSincronizar(mensajeHttp);
                    break;

                case PRCHTTP_SERVICIO:
                    ControlVisita.getInstance().actualizarServicio(parser);
                    break;

                case PRCHTTP_SERVICIOTOTAL:
                    ControlVisita.getInstance().procesarRespuestaServicioTotal(parser);
                    break;

                case PRCHTTP_SERVICIOSYNCRONIZAR:
                    ControlVisita.getInstance().procesarRespuestaServicioTotalSyncronizar(parser);
                    break;

                case PRCHTTP_IDIOMA:
                    IdiomaManager.getInstance().registrarSincronizacion(mensajeHttp);
                    break;
                    
                case PRCHTTP_AVANCE:
                    ControlUsuario.getInstance().procesarAvanceOnLine(parser);
                    break;                        

            }
        } finally {
            inputReader.close();
            inputReader = null;
            parser = null;
        }
        System.gc();
    }

    public void notifyHttpError(MensajeHttp mensajeHttp) {


        switch (proceso) {
            case PRCHTTP_VALIDARUSUARIO:
                ControlUsuario.getInstance().procesarUsuarioOffLine(new String(mensajeHttp.getMensaje()));
                break;


            default:
                ControlUsuario.getInstance().comunicacionOffLine(new String(mensajeHttp.getMensaje()));
                break;
        }
    }
}
